前面有說過字串的基本樣式是什麼,這邊來更進一步去理解字串是什麼。
字串-顧名思義即是文字的集合體
字串的編碼方式跟一般編碼方式是有些出入,只要被列為是字串裡面的每一個文字都代表一個16-bit unsigned integer values(16位元的無符號數),之後才會轉成Unicode給計算機讀取,也就是字串會經過兩次的編碼一次UTF-16一次Unicode。
所以針對字串的所有操作都不是針對字面上的操作,而是在16-bit上面運作。
一個字串的最大長度是2**53-1,
顧名思義即是將value的型別type轉換成一個字串,如果value沒有值那會得到一個空字串。
雖然字串的基礎概念十分簡短,但是字串的運用很多都是在物件化之後。
這是一個不需要特別操作的行為,當字串在執行物件化的特性時就會自動物件化
也就是Object("一個字串Shark"),
ES5之後,字串可視為一個唯讀的陣列,可用[](square brackets)去呼叫字串個別的文字,或是取得字串的長度。
下面的[[Prototype]]:String,則表示他繼承從全域物件中繼承了"String" property(物件的特性),可以使用裡面的key跟function,也就是我們常說的Properties跟method。
字串的Properties只有一個length,可以回傳字串的長度,無法去更改他的值。
從上圖可以看的出來,即使賦予一個字串的length一個新值,再次呼叫的時候,
length的值也不會改變。
String的method(方法)雖然都是String.prototype開頭但是String.prototype是直接用對象的字串帶入,所以值計執行上,只會是字串.method(),method依ECMA分類有34種,鯊魚會盡量依實用度為大家做介紹。
參考資料